allocative 0.3.3

Inspect rust object tree and output it as flamegraph
Documentation
# Allocative Crate implements lightweight memory profiler which allows object traversal and size introspection. An object implementing [`Allocative`] trait is introspectable, and this crate provides two utilities to work with such objects: * [`FlameGraphBuilder`] to build a flame graph of object tree * [`size_of_unique_allocated_data`] provides estimation of how much allocated memory the value holds ## Allocative overhead When allocative is used, binary size is slightly increased due to implementations of [`Allocative`] trait, but it has no runtime/memory overhead when it is not used. ## How it is different from other call-stack malloc profilers like jemalloc heap profiler Allocative is not a substitute for call stack malloc profiler, it provides a different view on memory usage. Here are some differences between allocative and call-stack malloc profiler: * Allocative requires implementation of [`Allocative`] trait for each type which needs to be measured, and some setup in the program to enable it * Allocative flamegraph shows object by object tree, not by call stack * Allocative shows gaps in allocated memory, e.g. spare capacity of collections or too large padding in structs or enums * Allocative allows profiling non-malloc allocations (for example, allocations within [bumpalo]) * Allocative allows profiling of memory for subset of the process data (for example, measure the size of RPC response before serialization) [bumpalo]: https://github.com/fitzgen/bumpalo